package class0908.demo2;

import class0908.demo1.D;

import java.util.Objects;

/**
 * @Author:galaxy_yan
 * @Date: 2022/9/8
 * @Time: 18:56
 * @Description
 */
public class Date implements Cloneable{
    int year;
    int month;
    int day;

    //所有类默认继承Object类，object类是继承的根
    public Date(int year ,int month ,int day){
        super();
        this.year=year;
        this.month=month;
        this.day=day;
    }

    @Override
    public String toString() {
        return "["+year+"-"+month+"-"+day+"]";
    }

    @Override
    public boolean equals(Object obj) {

        if(obj==null){
            return false;
        }

        if(this==obj){
//            指向同一个对象，不需要每个字段逐渐比较
            return true;
        }

        if(!(obj instanceof Date)){
            return false;
        }

        Date d=(Date)obj;

        return (year==d.year)&&
                (month==d.month)&&
                (day==d.day);

    }

    @Override
    public int hashCode() {
        return Objects.hash(year,month,day);
    }

    public static  void method(){
        Date d1=new Date(2022,9,8);
        Date d2=new Date(2022,9,8);
//内容相同，哈希码不一样
//        想要哈希码相同，重写hashCode方法
        System.out.println(d1.hashCode());
        System.out.println(d2.hashCode());
    }

    public static void method2(){
        Date d1=new Date(2022,9,8);
//        这种拷贝是将对象的地址拷贝了一份
//        d1和d2最终指向的是同一份对象--->浅拷贝
        Date d2=d1;
//        产生异常
//        Date d3=(Date)d1.clone();
        d1.day=5;
        String str=new String("hello");
        System.out.println(d2);
    }
    public static void main(String[] args)throws CloneNotSupportedException {
        Date d1=new Date(2022,9,8);
//        这种拷贝是将对象的地址拷贝了一份
//        d1和d2最终指向的是同一份对象--->浅拷贝
        Date d2=d1;
        Date d3=(Date)d1.clone();

    }


}

